package projeto.administrativo.usuarios.cih;

import java.util.ArrayList;
import java.util.List;

import nucleo.comuns.visao.NucleoTab;

import org.zkoss.zkplus.spring.SpringUtil;

import plataforma.autenticacao.cdp.GrupoAcesso;
import plataforma.autenticacao.cdp.Usuario;
import plataforma.base.cdp.ExcecaoRegraNegocio;
import plataforma.crudestatico.cih.FormularioDadosCRUDEstatico;
import projeto.administrativo.grupoacesso.cgd.DaoGrupoAcesso;

public class FormDadosUsuario extends FormularioDadosCRUDEstatico<Usuario> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4359843579998950180L;

	AbaGrupoAcesso abaGrupoAcesso;
	AbaUsuario abaUsuario;

	@Override
	protected List<NucleoTab> definirTabs() {

		List<NucleoTab> listaTabs = new ArrayList<NucleoTab>();

		abaGrupoAcesso = new AbaGrupoAcesso();
		abaUsuario = new AbaUsuario();

		listaTabs.add(abaUsuario);
		listaTabs.add(abaGrupoAcesso);

		return listaTabs;
	}

	@Override
	protected void preencherDadosObjeto(Usuario objeto) {

		objeto.setUsername(abaUsuario.getCampoLogin().getValue());
		objeto.setGrupoAcesso(abaGrupoAcesso.getSetGrupoAcesso());
		objeto.setPassword(abaUsuario.getCampoSenha().getValue());
	}

	@Override
	protected void preencherDadosTela(Usuario objeto)
			throws ExcecaoRegraNegocio {
		if (objeto.getUsername() != null)
			abaUsuario.getCampoLogin().setValue(objeto.getUsername());

		// dados grupos de acesso
		DaoGrupoAcesso daoGrupoAcesso = SpringUtil.getApplicationContext()
				.getBean(DaoGrupoAcesso.class);
		List<GrupoAcesso> todosGruposAcesso = daoGrupoAcesso
				.recuperarTodosAtivoComOrdenacao("descricao");

		abaGrupoAcesso.setGrupoAcesso(objeto.getGrupoAcesso(),
				todosGruposAcesso);

	}

	public void configurarExtensao() {
		if (getModoExibicao() == ModoExibicao.NOVO) {

			// dados grupos de acesso
			DaoGrupoAcesso daoGrupoAcesso = SpringUtil.getApplicationContext()
					.getBean(DaoGrupoAcesso.class);
			List<GrupoAcesso> todosGruposAcesso = daoGrupoAcesso
					.recuperarTodosAtivoComOrdenacao("descricao");

			abaGrupoAcesso.setGrupoAcesso(getObjetoCadastroDados()
					.getGrupoAcesso(), todosGruposAcesso);

		} else {
			abaUsuario.getCampoLogin().setDisabled(true);
			abaUsuario.getCampoSenha().setDisabled(true);
			abaUsuario.getCampoSenha().setVisible(false);
			abaUsuario.getCampoSenhaConfirmacao().setDisabled(true);
			abaUsuario.getCampoSenhaConfirmacao().setVisible(false);
			
		}

	}

	@Override
	public boolean isValid() {
		if (abaUsuario.isValid()) {
			return true;
		}
		return false;
	}
}
